using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Charting._DataManagement
{
    /// <summary>
    /// <para>Generate Airspace Areas</para>
    /// <para>Generates AirspaceArea features from Airspace features.</para>
    /// <para>从空域要素生成空域区域要素。</para>
    /// </summary>    
    [DisplayName("Generate Airspace Areas")]
    public class GenerateAirspaceAreas : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateAirspaceAreas()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_airspace_features">
        /// <para>Input Airspace Features</para>
        /// <para>The input Airspace features. These features adhere to the AIS geodatabase schema.</para>
        /// <para>输入空域功能。这些要素遵循 AIS 地理数据库方案。</para>
        /// </param>
        /// <param name="_target_airspace_area_features">
        /// <para>Target Airspace Area Features</para>
        /// <para>The target AirspaceArea feature class. These features adhere to the AIS geodatabase schema.</para>
        /// <para>目标 AirspaceArea 要素类。这些要素遵循 AIS 地理数据库方案。</para>
        /// </param>
        /// <param name="_aoi_features">
        /// <para>Area of Interest Features</para>
        /// <para>The area of interest boundary within which features will be processed.</para>
        /// <para>将在其中处理要素的感兴趣区域边界。</para>
        /// </param>
        /// <param name="_preference_table">
        /// <para>Preference Table</para>
        /// <para>The table containing the specified preferences.</para>
        /// <para>包含指定首选项的表。</para>
        /// </param>
        /// <param name="_preference">
        /// <para>Preference</para>
        /// <para>The preference derived from the Preference Table parameter that will be used to process the airspace features at the chosen altitudes..</para>
        /// <para>从“首选项表”参数派生的首选项，该参数将用于处理所选高度的空域要素。</para>
        /// </param>
        public GenerateAirspaceAreas(object _in_airspace_features, object _target_airspace_area_features, object _aoi_features, object _preference_table, object _preference)
        {
            this._in_airspace_features = _in_airspace_features;
            this._target_airspace_area_features = _target_airspace_area_features;
            this._aoi_features = _aoi_features;
            this._preference_table = _preference_table;
            this._preference = _preference;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Generate Airspace Areas";

        public override string CallName => "aviation.GenerateAirspaceAreas";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_airspace_features, _target_airspace_area_features, _aoi_features, _preference_table, _preference, _derived_airspace_part_features, _vertical_limit_override_table, _updated_airspace_area_features];

        /// <summary>
        /// <para>Input Airspace Features</para>
        /// <para>The input Airspace features. These features adhere to the AIS geodatabase schema.</para>
        /// <para>输入空域功能。这些要素遵循 AIS 地理数据库方案。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Airspace Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_airspace_features { get; set; }


        /// <summary>
        /// <para>Target Airspace Area Features</para>
        /// <para>The target AirspaceArea feature class. These features adhere to the AIS geodatabase schema.</para>
        /// <para>目标 AirspaceArea 要素类。这些要素遵循 AIS 地理数据库方案。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Airspace Area Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_airspace_area_features { get; set; }


        /// <summary>
        /// <para>Area of Interest Features</para>
        /// <para>The area of interest boundary within which features will be processed.</para>
        /// <para>将在其中处理要素的感兴趣区域边界。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Area of Interest Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _aoi_features { get; set; }


        /// <summary>
        /// <para>Preference Table</para>
        /// <para>The table containing the specified preferences.</para>
        /// <para>包含指定首选项的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Preference Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _preference_table { get; set; }


        /// <summary>
        /// <para>Preference</para>
        /// <para>The preference derived from the Preference Table parameter that will be used to process the airspace features at the chosen altitudes..</para>
        /// <para>从“首选项表”参数派生的首选项，该参数将用于处理所选高度的空域要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Preference")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _preference { get; set; }


        /// <summary>
        /// <para>Derived Airspace Parts</para>
        /// <para><xdoc>
        ///   <para>The feature class that will be updated with airspace features derived from the Input Airspace Features parameter.</para>
        ///   <para>The feature class that will be updated with airspace features derived from the in_airspace_features parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将使用派生自输入空域要素的空域要素进行更新的要素类。</para>
        ///   <para>将使用派生自 in_airspace_features 参数的空域要素进行更新的要素类。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Derived Airspace Parts")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _derived_airspace_part_features { get; set; } = null;


        /// <summary>
        /// <para>Vertical Limit Override Table</para>
        /// <para>A table that overrides the vertical height values set in the preference table.</para>
        /// <para>覆盖首选项表中设置的垂直高度值的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Vertical Limit Override Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _vertical_limit_override_table { get; set; } = null;


        /// <summary>
        /// <para>Updated Airspace Area Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Airspace Area Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_airspace_area_features { get; set; }


        public GenerateAirspaceAreas SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}